home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Amiga
/
World of Amiga.iso
/
archive
/
assembly
/
24bitcop_aga.lha
/
copper-RBG0.S
< prev
next >
Wrap
Text File
|
1993-04-22
|
2KB
|
147 lines
;+++++ Creating a 24 bits copperlist
;+++++ Code by Yragael (April 1993)
section prg,code_c
include "df1:sources/registres.s"
;*************** INDEX FONCTIONS ***************
openlib=-552
closelib=-414
allocmem=-198
freemem=-210
permit=-138
forbid=-132
;*************** CONSTANTES ***************
starty=45
sizey=180
memory=2+$10000
copsize=sizey*(4+4+4+4+4)+4
;sizey*(4+4+4+4+4) (wait, $0106, $0180, $0106, $0180)
;4 ($FFFFFFFE)
;*************** PROGRAMME PRINCIPAL ***************
bsr.w init
boucle:
btst #6,$bfe001
bne boucle
bsr fin
rts
;*************** INITIALISATION ***************
init:
;reservation de la memoire copper
move.l $4,a6
move.l #copsize,d0
move.l #memory,d1
jsr allocmem(a6)
move.l d0,copadr
;creation de la copperlist
move.l copadr,a0
moveq #0,d1
move.w #starty,d0
lsl.w #8,d0
or.w #$01,d0
move.w #sizey-1,d2
coploop0:
move.w d0,(a0)+
addi.w #$0100,d0
move.w #$FFFE,(a0)+
move.w #$0106,(a0)+
move.w #$0000,(a0)+
move.w #$0180,(a0)+
move.l d1,d3
lsr.l #4,d3
move.l d3,d4
lsr.l #4,d4
move.w d4,d5
lsr.w #4,d5
and.w #$000F,d3
and.w #$00F0,d4
and.w #$0F00,d5
or.w d5,d4
or.w d4,d3
move.w d3,(a0)+
move.w #$0106,(a0)+
move.w #$0200,(a0)+
move.w #$0180,(a0)+
move.w d1,d3
move.l d1,d4
lsr.l #4,d4
move.w d4,d5
lsr.w #4,d5
and.w #$000F,d3
and.w #$00F0,d4
and.w #$0F00,d5
or.w d5,d4
or.w d4,d3
move.w d3,(a0)+
addq.l #1,d1
dbf d2,coploop0
move.l #$FFFFFFFE,(a0)
;modif DMA,...
jsr forbid(a6)
move.w #$03F0,dmacon ;couper tous les DMA
move.l copadr,cop1lch ;adresse coplist1
clr.w copjmp1 ;copjump1
move.w #$86C0,dmacon ;COPEN et BPLEN et BLTPRI et BLTEN
rts
;*************** WAIT VBL ***************
waitvbl:
cmp.b #$FF,vhposr
bne waitvbl
rts
;*************** WAIT BLITTER ***************
waitblit:
btst #14,dmaconr
bne.b waitblit
rts
;*************** FIN DE PROGRAMME ***************
fin:
;restaurer les anciennes preferences
move.l $4,a6
move.l #gfxname,a1
clr.l d0
jsr openlib(a6)
move.l d0,a1
move.l 38(a1),cop1lch
clr.w copjmp1 ;copjump1
move.w #$83F0,dmacon ;active tous les DMA
jsr permit(a6)
;liberation de la memoire copper
move.l copadr,a1
move.l #copsize,d0
jsr freemem(a6)
rts
;*************** VARIABLES ***************
copadr: dc.l 0
gfxname: dc.b "graphics.library",0
even